package com.suntoon.framework.annotation;

import com.suntoon.framework.util.LimitTypeEnum;

import java.lang.annotation.*;

/**
 * @Author: LEAVES
 * @Version 1.0
 * @Date: 2021年06月21日 14时44分12秒
 * @Description:    限流注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Limit {
    /**
     * 资源的名字
     *
     * @return String
     */
    String name() default "";

    /**
     * 资源的key
     *
     * @return String
     */
    String key() default "";

    String keyGenerator() default "";

    /**
     * Key的prefix
     *
     * @return String
     */
    String prefix() default "";

    /**
     * 给定的时间段
     * 单位秒
     *
     * @return int
     */
    int period() default 1;

    /**
     * 最多的访问限制次数
     *
     * @return int
     */
    int count() default 5;

    /**
     * 类型
     *
     * @return LimitType
     */
    LimitTypeEnum limitType() default LimitTypeEnum.IP;
}
